package com.demo.function.retrofit;

import com.alibaba.fastjson.JSONObject;
import com.demo.model.entity.User;
import com.demo.starter.dto.GeneralResult;
import com.github.lianjiatech.retrofit.spring.boot.annotation.RetrofitClient;
import okhttp3.MultipartBody;
import retrofit2.http.Body;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;

/**
 * 测试retrofit，需要启动service-miya服务
 * @author K
 */
@RetrofitClient(baseUrl = "http://127.0.0.1:8989")
public interface RetrofitPostService {

    /**
     * post非表单请求
     * @param user 用户参数
     * @return User对象
     */
    @POST("modifyUser")
    User modifyUser(@Body User user);

    /**
     * 初始化User对象
     * @param user 请求参数
     * @return User对象
     */
    @POST("initUser")
    GeneralResult<User> initUser(@Body User user);

    /**
     * 初始化Person对象，接口实际返回是GeneralResult<Map<String, String>>
     *     Map对象里key=Name首字母是大写，测试转成Person对象能否映射name属性
     * @return Person对象
     */
    @POST("initPerson")
    GeneralResult<User> initPerson();

    /**
     * 单个文件上传
     * @param body 上传文件
     * @return 上传文件内容
     */
    @Multipart
    @POST("upload")
    JSONObject upload(@Part MultipartBody.Part body);
}
